#include <iostream>
using namespace std;

class BMW
{
public:
	BMW()
	{
		cout << "构造函数调用" << endl;
	}
	~BMW()
	{
		cout << "析构函数调用" << endl;
	}
};

//测试void* 接收的类，是否可以delete，结果是不会调用
void func1()
{
	cout << "func1测试开始" << endl;
	void* b = new BMW;
	delete b;//不会调用
}
int main()
{
	using namespace std;
	int* p = new int;//new向内存申请一个动态内存
	cout << p << endl;
	delete p;//务必要用delete清理掉，清理后随机分配
	p = nullptr;
	cout << p << endl;
	p = new int;//释放以后可以重新使用
	cout << p << endl;
	delete p;


	//创建动态数组
	int* p1 = new int[10];//创建一个10个int值的数组，分配给指针p
	for (int i = 0; i < 10; i++)
	{
		p1[i] = i + 100;
		cout << p1[i] << endl;
	}
	delete[]p1;//数组释放时使用delete[]

	//创建动态类数组
	BMW* m = new BMW[3];
	delete[] m;

	//delete void*可能出错，不会调用析构函数
	func1();

	return 0;


}